package com.wuwei.gulimall.product;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 1整个mybatis-plus
 * 1.1导入依赖
 * 1.2配置
 * 1.2.1配置数据源，导入驱动
 * 1.2.2配置mybatis-plus相关信息
 * 2使用mybatis-plus的逻辑删除
 * 2.1配置全局删除规则（可以省略）
 * 2.2配置逻辑删除组件(低版本需要做)
 * 2.3给bean加上逻辑删除注解@TableLogic
 * 3配置阿里云oos
 * 3.1引入maven依赖
 * 3.2配置yml配置文件中key endpoint等相关信息
 * 3.3输入bucketName，objectName，filePath
 * 3.4ossClient.putObject(bucketName, objectName, inputStream);
 * 4JSR303
 * 4.1给需要校验的数据（bean）添加校验注解来自javax.validation.Constraint，并定义自己的message提示
 * 4.2开启校验功能@Valid，可以自定义相应message，@NotBlank(message = "自定义响应信息")
 * 4.3在校验的bean后紧跟BindingResult就可以获取校验的结果
 * 4.4.1分组校验：给校验注解标注在什么情况下需要进行校验 @NotNull(message = "修改必须指定品牌ID",groups = {UpdateGroup.class})
 * 4.4.2在controller上标注@Validated({AddGroup.class})
 * 4.4.3默认没有指定分组的校验注解，在分组校验情况下不生效
 * 4.5自定义校验
 * 4.5.1编写自定义校验注解
 * 4.5.2编写自定义校验器ConstraintValidator
 * 4.5.3关联自定义校验注解和自定义校验器
 *       给校验注解上加上@Documented
 * @Constraint(validatedBy = {ListValueConstraintValidator.class【可以指定多个不同的校验器，适配多个不同类型的校验】})
 * @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
 * @Retention(RetentionPolicy.RUNTIME)
 *
 * 5统一异常处理
 * @ControllerAdvice
 * 5.1抽取异常处理类
 *
 */
@EnableDiscoveryClient
@SpringBootApplication
public class GuliProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GuliProductApplication.class, args);
    }

}
